Information in computers is typically stored as items such as files, documents, objects, etc. Common practice is to organize and later locate items through the use of a hierarchical file structure. One well-known type of hierarchical file structure is organized as a “tree”. In a tree structured file system, files are organized with a single root node referred to as the “root.” One or more further nodes may then be connected directly to the root and would thus be referred to a “children” of the root node where the root node would be considered the “parent” node. One or more additional nodes may be subsequently connected to any other node in the tree in a similar parent-child relationship. In a typical electronic file storage system, each node that has at least one other child node connected to it is a “directory” of files. A “leaf” node is a node that has no other child node connected to it and is connected to the tree only by the parent node immediately above it. Leaf nodes may be empty subdirectories or files. A “sub-tree” is a particular portion or branch of the overall tree taken from a designated node and including all children underneath the designated node.
Although this technology has proven to be useful, it would be desirable to present additional improvements. Tree views of a hierarchical file structure work well for moderate amounts of information. However, a tree view does not scale well for hierarchical file structures comprising many items (either many sub-directories or many files). Both the “depth” of the tree, the number of parent-child node relationships, and the “breadth” of the tree, the number of sibling relationships, increase the overall complexity and thus reduce the efficacy of such hierarchic file systems. Such complex trees are typical. When expanding a large tree structure, a user can view only a relatively small portion of the large tree structure at any one time. Consequently, a user can focus only on a small section of the tree structure, losing contact with other parts of the structure that may be relevant. Further, conventional expansion or contraction of parts of a tree structure is an “all or nothing” operation. Expanding a large sub-tree results in a view that often shows some but not all of the direct children of that sub-tree thereby leaving out of view many of the items within the large sub-tree and potentially removing from view items at higher levels in the overall tree but which are not children of the sub-tree under consideration. Once collapsed, none of the large sub-tree is viewable by the user.
Conventional task lists, tables of content, or other hierarchically structured lists face similar display and navigation issues. For example, a user wishes to view a task list for a project that comprises a thousand items. The user opens or expands the task list thereby displaying all one thousand items. However, the user can see only the number of items that can fit within a viewing window. The user collapses the task list for the project, and all one thousand items are hidden.
What is therefore needed is a system, a computer program product, and associated method that allows users to selectively customize which information will be displayed in sub-trees, thereby allowing users to partially expand or collapse a sub-tree such that the desired items or files are displayed rather than all items or no items. The need for such a solution has heretofore remained unsatisfied.